home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS075.dsk / SOFSYMREF.S < prev    next >
Text File  |  2012-02-16  |  4KB  |  219 lines

  1. *
  2. *
  3. *   SOFSYMREF
  4. *   ^^^^^^^^^
  5. *
  6. *
  7. *BY DAVE EDMUNDS, 18 MAY 80 
  8. *
  9. *
  10. *START 28000, LENGTH 273 
  11. *START $6D60, LENGTH $111
  12. *
  13. *PROCEDURE:
  14. * A.LOAD APPLESOFT PROGRAM
  15. * B.BRUN SOFSYMREF
  16. * C.TO REPEAT, CALL 28000
  17. *
  18. *
  19. *LINE POINTER, LOW BYTE: 
  20. LNPTL     EQU $6
  21. *LINE POINTER, HIGH BYTE:
  22. LNPTH     EQU $7
  23. *NEXT POINTER, LOW:
  24. NXPTL     EQU $8 
  25. *NEXT POINTER, HIGH:
  26. NXPTH     EQU $9 
  27. *HOLD ACCUMULATOR:
  28. ACC       EQU $19
  29. *LINE NUMBER, LOW:
  30. LINOL     EQU $1A 
  31. *LINE NUMBER, HIGH: 
  32. LINOH     EQU $1B 
  33. *FIGURE REGISTER (3 BYTES):
  34. FIG       EQU $1D
  35. *PROGRAM POINTER, LOW:
  36. PRGL      EQU $67
  37. *PROGRAM POINTER, HIGH: 
  38. PRGH      EQU $68
  39. *LINE LENGTH:
  40. LLN       EQU $FB
  41. *SPACE FLAG: 
  42. SPFG      EQU $FC
  43. *QUOTES FLAG:
  44. QFG        EQU $FD
  45. *LINE FLAG:
  46. LINFG     EQU $FE
  47. *CHARACTER FLAG:
  48. CHARFG    EQU $FF
  49. *RETURN TO BASIC:
  50. RBAS      EQU $3D0
  51. *CARRIAGE RETURN OUT:
  52. CROUT     EQU $FD8E
  53. *PRINT HEXADECIMAL BYTE:
  54. PRBYTE    EQU $FDDA
  55. *PRINT HEXADECIMAL (LOWER) NYBBLE: 
  56. PRHEX     EQU $FDE3
  57. *CHARACTER OUT:
  58. COUT      EQU $FDED
  59. *$6D60=28000:
  60.           OBJ $6D60
  61.           ORG $6D60 
  62.           LDA PRGL 
  63.           STA NXPTL 
  64.           LDA PRGH 
  65.           STA NXPTH 
  66.           LDA #$0
  67.           STA SPFG
  68.           STA QFG
  69.           STA LINFG
  70.           STA CHARFG
  71. *EXAMINE LINE:
  72. LINE      LDA NXPTL 
  73.           STA LNPTL 
  74.           LDA NXPTH 
  75.           STA LNPTH 
  76.           LDY #$0
  77.           LDA (LNPTL),Y 
  78.           STA NXPTL
  79.           SEC
  80.           SBC LNPTL
  81.           STA LLN
  82.           INY
  83.           LDA (LNPTL),Y
  84.           STA NXPTH
  85.           BEQ END
  86.           INY
  87.           LDA (LNPTL),Y   
  88.           STA LINOL
  89.           INY
  90.           LDA (LNPTL),Y
  91.           STA LINOH
  92. *NEXT CHARACTER:
  93. NCHAR     INY
  94.           CPY LLN 
  95.           BEQ EOL
  96.           LDA (LNPTL),Y
  97.           CMP #'"  
  98.           BEQ QUOTE
  99.           PHA
  100.           LDA QFG
  101.           BNE NCHAR
  102.           PLA
  103.           CMP #$B2
  104.           BEQ EOL
  105.           CMP #$83
  106.           BEQ EOL
  107.           CMP #$5B
  108.           BCS NOVAR
  109.           CMP #'0
  110.           BCC QUAL
  111.           CMP #'A
  112.           BCC NUM
  113.           LDX LINFG 
  114.           BEQ PRLN
  115. *PRINT:
  116. PR        LDX #$1
  117.           STX CHARFG
  118. *PRINT CHARACTER:
  119. PRCH      ORA #$80
  120.           JSR COUT
  121.           LDX #$1
  122.           STX SPFG
  123.           BNE NCHAR
  124. *FINISHED:
  125. END       JSR RBAS 
  126. *END OF LINE:
  127. EOL       LDA LINFG
  128.           BEQ NXLN
  129.           JSR CROUT
  130. *PREPARE FOR NEXT LINE:
  131. NXLN      LDA #$0
  132.           STA QFG
  133.           STA LINFG
  134.           STA CHARFG
  135.           BEQ LINE
  136. *NOT A VARIABLE:
  137. NOVAR     LDA SPFG
  138.           BEQ ZER
  139.           LDA #$A0
  140.           JSR COUT
  141. *ZERO SPACES NEEDED:
  142. ZER       LDA #$0
  143.           STA SPFG
  144.           STA CHARFG
  145.           BEQ NCHAR
  146. *QUOTE CHARACTER:
  147. QUOTE     LDA QFG 
  148.           BEQ QUITE
  149.           LDA #$0
  150.           STA QFG
  151.           BEQ NCHAR
  152. *SECOND QUOTE CHARACTER:
  153. QUITE     LDA #$1
  154.           STA QFG
  155.           BNE NOVAR
  156. *VARIABLE QUALIFICATION:
  157. QUAL      LDX CHARFG
  158.           BEQ NOVAR
  159.           CMP #'$
  160.           BEQ PRCH 
  161.           CMP #'%
  162.           BEQ PRCH 
  163.           CMP #'(
  164.           BNE NOVAR
  165.           LDX #$0
  166.           STX CHARFG
  167.           BEQ PRCH 
  168. *NUMBER:
  169. NUM       CMP #':
  170.           BCS NOVAR 
  171.           LDX CHARFG
  172.           BEQ NOVAR
  173.           BNE PRCH 
  174. *PRINT LINE NUMBER:
  175. PRLN      STA ACC 
  176.           LDX LINOL
  177.           LDA LINOH
  178.           JSR DEHEX 
  179.           LDA #"- 
  180.           JSR COUT
  181.           LDA #$A0
  182.           JSR COUT
  183.           LDA ACC 
  184.           LDX #$1
  185.           STX LINFG
  186.           BNE PR 
  187. *  DEHEX SUBROUTINE--
  188. *CONVERT HEX TO DECIMAL:
  189. DEHEX     SED
  190.           LDX #$0
  191.           STX FIG
  192.           STX FIG+1
  193.           STX FIG+2
  194.           LDX #$10
  195. *ROLL (DOUBLE & ADD NEW BIT):
  196. RO        ROL LINOL
  197.           ROL LINOH
  198.           LDA FIG
  199.           ADC FIG
  200.           STA FIG
  201.           LDA FIG+1
  202.           ADC FIG+1
  203.           STA FIG+1
  204.           LDA FIG+2
  205.           ADC FIG+2
  206.           STA FIG+2
  207.           DEX
  208.           BNE RO
  209.           CLD
  210.           JSR PRHEX 
  211.           LDA FIG+1
  212.           JSR PRBYTE
  213.           LDA FIG
  214.           JSR PRBYTE
  215.           RTS
  216. *
  217. *  SOFSYMREF
  218. *
  219.